import createIcon from 'ethereum-blockies-base64';
// 辅助函数：随机生成稀有度
export const randomRarity = () => {
    const rarities = ['Common', 'Uncommon', 'Rare', 'Epic', 'Legendary'];
    const weights = [50, 30, 15, 4, 1]; // 权重分配，越稀有权重越低
    
    const totalWeight = weights.reduce((a, b) => a + b, 0);
    let random = Math.random() * totalWeight;
    
    for (let i = 0; i < weights.length; i++) {
      if (random < weights[i]) return rarities[i];
      random -= weights[i];
    }
    
    return rarities[0]; // 默认返回Common
  };

  // 辅助函数：生成随机属性
export  const generateRandomAttributes = () => {
    return [
      { trait_type: '力量', value: Math.floor(Math.random() * 100), rarity_percentage: Math.floor(Math.random() * 20) },
      { trait_type: '敏捷', value: Math.floor(Math.random() * 100), rarity_percentage: Math.floor(Math.random() * 20) },
      { trait_type: '智力', value: Math.floor(Math.random() * 100), rarity_percentage: Math.floor(Math.random() * 20) },
      { trait_type: '耐力', value: Math.floor(Math.random() * 100), rarity_percentage: Math.floor(Math.random() * 20) },
      { trait_type: '幸运', value: Math.floor(Math.random() * 100), rarity_percentage: Math.floor(Math.random() * 20) }
    ];
  };
  // 根据稀有度和ID生成宝藏描述
export const generateTreasureDescription = (rarity, id) => {
  // 基础描述模板
  const descriptions = {
    Common: [
      `编号${id}的普通宝藏，在区块链浅层被发现。由普通矿工开采，具有基础收藏价值。`,
      `这枚编号${id}的普通数字宝物是初级探险者的入门收藏品。虽然常见，但也是区块链世界的重要组成部分。`,
      `区块链矿洞#${id}中发掘的普通级数字宝藏，外观朴素但坚固耐用，为新手冒险者提供基础防护。`
    ],
    Uncommon: [
      `编号${id}的非凡宝藏，由经验丰富的矿工在区块链中层发掘。其独特的算法纹理使其在同类中脱颖而出。`,
      `这枚编号${id}的非凡数字宝物散发着淡淡的蓝光，据说能增强持有者的计算能力和交易速度。`,
      `区块链峡谷#${id}中发现的非凡级宝藏，表面刻有独特的哈希纹路，在阳光下会反射出数据流的光芒。`
    ],
    Rare: [
      `编号${id}的稀有宝藏，来自区块链深处的隐秘矿脉。只有少数资深矿工有能力获取如此珍贵的数字资产。`,
      `这枚编号${id}的稀有数字宝物能够自主生成微小的能量场，据说佩戴后可提升交易成功率和挖矿效率。`,
      `区块链深渊#${id}守护的稀有级宝藏，呈现出罕见的紫色光泽，能抵御大多数区块回滚攻击，是冒险者梦寐以求的装备。`
    ],
    Epic: [
      `编号${id}的史诗宝藏，是区块链创世区块附近的传奇收藏品。拥有它意味着你是数字世界的贵族。`,
      `这枚编号${id}的史诗数字宝物据说含有早期比特币矿工的智慧结晶，能预测短期内的市场波动和价格趋势。`,
      `远古区块#${id}孕育的史诗级宝藏，其表面流动着如液态黄金般的数据流，据说曾属于中本聪的秘密收藏。`
    ],
    Legendary: [
      `编号${id}的传说宝藏，被认为是区块链宇宙中最早的几个数字实体之一。拥有它的人将被视为加密世界的守护者。`,
      `这枚编号${id}的传说数字宝物能与区块链意识直接沟通，持有者有极小概率获得下一个区块的预言能力。`,
      `创世之初#${id}诞生的传说级宝藏，据说包含着区块链世界的核心密码，佩戴它的勇者将获得进入元宇宙最深处的资格。`
    ]
  };

  // 稀有度不存在时使用默认描述
  if (!descriptions[rarity]) {
    return `这是一个珍贵的数字宝藏 #${id}，在神秘的区块链世界中发现。它具有独特的特性和收藏价值。`;
  }

  // 从对应稀有度的描述中随机选择一个
  const options = descriptions[rarity];
  const randomIndex = Math.floor(Math.random() * options.length);
  return options[randomIndex];
};

// 根据钱包地址生成头像
export const generateAvatar = (address) => {
    if (!address || address.length < 10) return 'https://via.placeholder.com/150';
    try {
      return createIcon(address); // 使用ethereum-blockies-base64生成头像
    } catch (error) {
      console.error('生成头像失败:', error);
      return 'https://via.placeholder.com/150';
    }
  };

  // 将对象格式的attributes转换为数组格式
export const convertToAttributeArray = (attributes) => {
    if (Array.isArray(attributes)) return attributes;
    
    // 如果attributes是对象，转换为数组格式
    return Object.entries(attributes)
      .filter(([key]) => key !== 'Rarity') // 排除Rarity属性，因为已单独处理
      .map(([trait_type, value]) => ({
        trait_type,
        value,
        rarity_percentage: Math.floor(Math.random() * 20) // 随机生成稀有度百分比
      }));
  };